﻿using System.Drawing;
using System.IO;
using ImageResizer.Properties;

namespace ImageResizer.Outputs.Destination
{
    internal interface IOutputDestination
    {
        /// <summary>
        /// Container du type de sortie
        /// </summary>
        OutputType Type { get; }

        /// <summary>
        /// Container de la destination de la sortie
        /// </summary>
        string Path { get; }

        /// <summary>
        /// Container des informations de connection de la sortie (optionnel)
        /// </summary>
        Connection Connection { get; }

        /// <summary>
        /// réalise la copie d'un fichier
        /// </summary>
        /// <param name="fileToCopy">le chemin (local) du fichier à copier</param>
        /// <param name="destinationFile">le chemin de destination</param>
        /// <returns>true si la copie OK   false sinon</returns>
        bool Process(string fileToCopy, string destinationFile);

        /// <summary>
        /// réalise la copie d'un fichier
        /// </summary>
        /// <param name="streamToCopy">le stream à copier</param>
        /// <param name="destinationFile">le chemin de destination</param>
        /// <returns>true si la copie OK   false sinon</returns>
        bool Process(Stream streamToCopy, string destinationFile);

        /// <summary>
        /// réalise la copie d'une image
        /// </summary>
        /// <param name="imageToCopy">l'image à copier</param>
        /// <param name="destinationFile">le chemin de destination</param>
        /// <returns>true si la copie OK   false sinon</returns>
        bool Process(Image imageToCopy, string destinationFile);
    }
}